package br.com.webhomesites.padrao.presenter;

import br.com.webhomesites.padrao.model.ProdutoDAO;
import br.com.webhomesites.padrao.view.BuscarProdutoView;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

public class BuscarProdutoPresenterActionListeners {
    
    static class BuscarFocusListener implements FocusListener {
        
        private BuscarProdutoPresenter presenter;
        private BuscarProdutoView buscarProdutoView;
        
        public BuscarFocusListener(BuscarProdutoPresenter presenter) {
            this.presenter = presenter;
            buscarProdutoView = presenter.getBuscarProdutoView();
        }
        
        @Override
        public void focusGained(FocusEvent e) {
            ProdutoDAO produtoDAO = new ProdutoDAO();
            if (e.getSource() == presenter.getBuscarProdutoView().getComboCodigoJCombo()) {
                
                if (presenter.getBuscador() == presenter.BUSCADOR_COMPOSICAO_PRODUTO_VIEW) {
                    System.out.println("Verdadeiro");
                    buscarProdutoView.setListaCodigo(produtoDAO.findByTipo("C"));
                } else {
                    System.out.println("Falso");
                    buscarProdutoView.setListaCodigo(produtoDAO.findAll());
                    buscarProdutoView.setListaDescricao(produtoDAO.findAll());
                    buscarProdutoView.setListaSerie(produtoDAO.findAll());
                }
                
                //buscarProdutoView.comboDescricaoRemoveAllItens();
                //buscarProdutoView.comboSerieRemoveAllItens();
                
                presenter.setTipoBusca(presenter.POR_CODIGO_STRATEGY);
                
            } else if (e.getSource() == presenter.getBuscarProdutoView().getComboDescricaoJCombo()) {
                
                if (presenter.getBuscador() == presenter.BUSCADOR_COMPOSICAO_PRODUTO_VIEW) {
                    buscarProdutoView.setListaDescricao(produtoDAO.findByTipo("C"));
                } else {
                    buscarProdutoView.setListaDescricao(produtoDAO.findAll());
                }
                
                //buscarProdutoView.comboCodigoRemoveAllItens();
                //buscarProdutoView.comboSerieRemoveAllItens();
                
                presenter.setTipoBusca(presenter.POR_DESCRICAO_STRATEGY);
                
            } else if (e.getSource() == presenter.getBuscarProdutoView().getComboSerieJCombo()) {
                
                if (presenter.getBuscador() == presenter.BUSCADOR_COMPOSICAO_PRODUTO_VIEW) {
                    buscarProdutoView.setListaSerie(produtoDAO.findByTipo("C"));
                } else {
                    buscarProdutoView.setListaSerie(produtoDAO.findAll());
                }
                
                //buscarProdutoView.comboCodigoRemoveAllItens();
                //buscarProdutoView.comboDescricaoRemoveAllItens();
                
                presenter.setTipoBusca(presenter.POR_SERIE_STRATEGY);
                
            }
            
        }
        
        @Override
        public void focusLost(FocusEvent e) {
            if (e.getSource() == presenter.getBuscarProdutoView().getComboCodigoJCombo()) {
                
                //buscarProdutoView.comboDescricaoRemoveAllItens();
                //buscarProdutoView.comboSerieRemoveAllItens();
                
            } else if (e.getSource() == presenter.getBuscarProdutoView().getComboDescricaoJCombo()) {
                
                //buscarProdutoView.comboCodigoRemoveAllItens();
                //buscarProdutoView.comboSerieRemoveAllItens();
                
            } else if (e.getSource() == presenter.getBuscarProdutoView().getComboSerieJCombo()) {
                
                //buscarProdutoView.comboCodigoRemoveAllItens();
                //buscarProdutoView.comboDescricaoRemoveAllItens();
                
            }
        }
    }
    
    static class BuscarActionListener implements ActionListener {
        
        private BuscarProdutoPresenter presenter;
        
        public BuscarActionListener(BuscarProdutoPresenter presenter) {
            this.presenter = presenter;            
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            presenter.getTipoBusca().execute();            
            presenter.getBuscarProdutoView().dispose();
        }
    }
    
    static class SairActionListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent evt) {
            System.exit(0);
        }
    }
}
